package com.dahua.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @author chen_MingLiang
 * @version 1.0
 * @date 2020/1/29 20:02
 */
@Component
@Aspect
public class AspectJ {
//	@Pointcut("execution(public * com.dahua.aop.UserService.*(..))")
	private void pointCutExecutionAny(){}
	//withIn最多颗粒度控制到类
//	@Pointcut("within(public * com.dahua.aop.UserService)")
	private void pointCutWithIn(){}

	@Pointcut("args(java.lang.String)")
	private void pointCutExecutionargs(){}
	//this 表示执行目标方法的对象为代理对象则会被作用上AOP
	//target表示................目标对象.............
	@Pointcut("this(com.dahua.aop.UserService)")
	private void pointCutThis(){}

	/**
	 * 凡是带@的表示表达式都是在找注解的.@within可以到包下面的注解,可以是多个
	 *  @annotation 表示只能是单个注解
	 */
	//@Pointcut("@within(com.dahua.aop.UserService)")
	private void pointCutAnno(){}

	@Before("pointCutThis()")
	private void doAccessCheck(){
		System.out.println("tx");
	}
}
